package com.frame.common.security;

import java.sql.Timestamp;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
//import org.hibernate.HibernateException;
import org.springframework.security.authentication.encoding.Md5PasswordEncoder;

//import com.taskmanager.dao.TSysCharofgroupDAO;
//import com.taskmanager.dao.TSysDepartmentDAO;
//import com.taskmanager.dao.TSysDutyDAO;
//import com.taskmanager.dao.TSysUserDAO;
//import com.taskmanager.dao.TSysUsergroupDAO;
//import com.taskmanager.dao.TSysUserofusergroupDAO;
//import com.taskmanager.enums.StatusProperties;
//import com.taskmanager.exception.LoginException;
//import com.taskmanager.exception.SystemRunException;
//import com.taskmanager.hibernate.TSysCharacter;
//import com.taskmanager.hibernate.TSysCharofgroup;
//import com.taskmanager.hibernate.TSysDepartment;
//import com.taskmanager.hibernate.TSysDuty;
//import com.taskmanager.hibernate.TSysMenu;
//import com.taskmanager.hibernate.TSysUser;
//import com.taskmanager.hibernate.TSysUsergroup;
//import com.taskmanager.hibernate.TSysUserofusergroup;
//import com.taskmanager.service.inter.UserInter;
//import com.taskmanager.util.page.PageBean;

public class UserService {

	private Md5PasswordEncoder passwordEncoder = new Md5PasswordEncoder();
//	private TSysUserDAO userDAO;// 用户业务类
//	private TSysUsergroupDAO userGroupDAO;// 用户组业务类
//	private TSysUserofusergroupDAO userofGroupDAO;// 用户组 对应用户业务类
//	private TSysCharofgroupDAO charofgroupDAO;// 角色对应用户组业务类
//	private TSysDutyDAO dutyDAO; // 职位业务类
//	private TSysDepartmentDAO deptDAO; // 部门业务类
//	private static Log log = LogFactory.getLog(UserService.class);
//
//	public TSysUserDAO getUserDAO() {
//		return userDAO;
//	}
//
//	public void setUserDAO(TSysUserDAO userDAO) {
//		this.userDAO = userDAO;
//	}
//
//	public TSysUsergroupDAO getUserGroupDAO() {
//		return userGroupDAO;
//	}
//
//	public void setUserGroupDAO(TSysUsergroupDAO userGroupDAO) {
//		this.userGroupDAO = userGroupDAO;
//	}
//
//	public TSysUserofusergroupDAO getUserofGroupDAO() {
//		return userofGroupDAO;
//	}
//
//	public void setUserofGroupDAO(TSysUserofusergroupDAO userofGroupDAO) {
//		this.userofGroupDAO = userofGroupDAO;
//	}
//
//	public TSysCharofgroupDAO getCharofgroupDAO() {
//		return charofgroupDAO;
//	}
//
//	public void setCharofgroupDAO(TSysCharofgroupDAO charofgroupDAO) {
//		this.charofgroupDAO = charofgroupDAO;
//	}
//
//	public TSysDutyDAO getDutyDAO() {
//		return dutyDAO;
//	}
//
//	public void setDutyDAO(TSysDutyDAO dutyDAO) {
//		this.dutyDAO = dutyDAO;
//	}
//
//	public List<TSysDuty> dutyList() {
//		return this.dutyDAO.findAll();
//	}
//
//	public TSysDepartmentDAO getDeptDAO() {
//		return deptDAO;
//	}
//
//	public void setDeptDAO(TSysDepartmentDAO deptDAO) {
//		this.deptDAO = deptDAO;
//	}
//
//	public TSysUser findByUsersId(String id) throws LoginException,
//			SystemRunException {
//		return this.userDAO.findById(id);
//	}
//
//	/*
//	 * (non-Javadoc)
//	 * 
//	 * @see 用户登入 )
//	 */
//	public TSysUser findByUsersLogin(String loginName) throws LoginException,
//			SystemRunException {
//		try {
//			List userList = userDAO.findByCode(loginName);
//			if (StringUtils.isBlank(loginName)) {
//				throw new LoginException("登入名为空");
//			}
//			if (userList.size() > 0) {
//				return (TSysUser) userList.get(0);
//			} else {
//				return null;
//			}
//		} catch (LoginException e) {
//			throw e;
//		} catch (HibernateException e) {
//			log.error("查询登入用户名发生异常!" + e.getMessage());
//			throw new SystemRunException("查询登入用户名发生异常!", e);
//		}
//
//	}
//
//	/*
//	 * (non-Javadoc)
//	 * 
//	 * @see 修改用户信息 .hibernate .TSysUser)
//	 */
//	public void updateUserPass(TSysUser user) throws SystemRunException {
//		String code = user.getCode();
//		// 保存用户信息
//		String passwdString = passwordEncoder.encodePassword(
//				user.getPassword(), null);
//		user.setPassword(passwdString);
//		user.setModtime(new Timestamp(System.currentTimeMillis()));
//		userDAO.attachDirty(user);
//	}
//
//	public TSysUser findByUserPass(String loginName, String password)
//			throws SystemRunException {
//		// 保存用户信息
//		String passwdString = passwordEncoder.encodePassword(password, null);
//		return userDAO.findByUserPass(loginName, passwdString);
//	}
//
//	/*
//	 * (non-Javadoc)
//	 * 
//	 * @see 修改用户信息 .hibernate .TSysUser)
//	 */
//	public void updateUser(TSysUser user, String gid, String ugid)
//			throws SystemRunException {
//		String code = user.getCode();
//		try {
//			user.setModtime(new Timestamp(System.currentTimeMillis()));
//			if (StringUtils.isBlank(user.getPassword())) {
//				TSysUser us = userDAO.findById(user.getId());
//				user.setPassword(us.getPassword());
//			} else {
//				// 保存用户信息
//				String passwdString = passwordEncoder.encodePassword(user
//						.getPassword(), null);
//				user.setPassword(passwdString);
//			}
//			userDAO.merge(user);
//		} catch (HibernateException e) {
//			log.error("修改用户信息发生异常!" + e.getMessage());
//			throw new SystemRunException("修改用户信息发生异常!", e);
//		}
//		try {
//			// 保存用户组信息
//			TSysUserofusergroup ugs = userofGroupDAO.findById(ugid);
//			if (ugs != null) {
//				TSysUsergroup ug = new TSysUsergroup();
//				ug.setId(gid);
//
//				ugs.setTSysUsergroup(ug);
//				ugs.setStatus(true);
//				ugs.setModtime(new Timestamp(System.currentTimeMillis()));
//				ugs.setModperson(user.getModperson());
//
//				userofGroupDAO.attachDirty(ugs);
//			}
//		} catch (HibernateException e) {
//			log.error("修改用户组信息发生异常!" + e.getMessage());
//			throw new SystemRunException("修改用户组信息发生异常!", e);
//		}
//
//	}
//
//	/*
//	 * (non-Javadoc)
//	 * 
//	 * @see 查找用户信息
//	 * com.taskmanager.service.impl.UserInter#list(com.taskmanager.util.page
//	 * .PageBean)
//	 */
//	public PageBean userList(TSysUser user, PageBean pb)
//			throws SystemRunException {
//		return this.userDAO.list(user, pb);
//	}
//
//	public void addUser(TSysUser user, String gid) throws SystemRunException {
//		String code = user.getCode();
//		try {
//			// 保存用户信息
//			String passwdString = passwordEncoder.encodePassword(user
//					.getPassword(), null);
//			user.setPassword(passwdString);
//			user.setModtime(new Timestamp(System.currentTimeMillis()));
//			userDAO.save(user);
//		} catch (HibernateException e) {
//			log.error("保存用户信息发生异常!" + e.getMessage());
//			throw new SystemRunException("保存用户信息发生异常!", e);
//		}
//		try {
//			// 保存用户组信息
//			TSysUserofusergroup ugs = new TSysUserofusergroup();
//			ugs.setTSysUser((TSysUser) userDAO.findByCode(code).get(0));
//			TSysUsergroup ug = new TSysUsergroup();
//			ug.setId(gid);
//			ugs.setTSysUsergroup(ug);
//			ugs.setStatus(true);
//			ugs.setModtime(new Timestamp(System.currentTimeMillis()));
//			ugs.setModperson(user.getId());
//			userofGroupDAO.save(ugs);
//		} catch (HibernateException e) {
//			log.error("保存用户组信息发生异常!" + e.getMessage());
//			throw new SystemRunException("保存用户组信息发生异常!", e);
//		}
//	}
//
//	/**
//	 * 查询用户组信息
//	 */
//	public List<TSysUsergroup> findUsergroup() throws SystemRunException {
//		return userGroupDAO.findAll();
//	}
//
//	public void addUserGroup(TSysUsergroup userGroup) throws SystemRunException {
//		userGroup.setModtime(new Timestamp(System.currentTimeMillis()));
//		this.userGroupDAO.save(userGroup);
//
//	}
//
//	public void updateUserGroup(TSysUsergroup userGroup)
//			throws SystemRunException {
//		userGroup.setModtime(new Timestamp(System.currentTimeMillis()));
//		this.userGroupDAO.attachDirty(userGroup);
//
//	}
//
//	public void updateCharofgroup(TSysCharofgroup charofGroup)
//			throws SystemRunException {
//
//	}
//
//	/**
//	 * 角色 修改对应权限信息
//	 */
//	public void updateCharofgroup(TSysUsergroup userGroup, String charId)
//			throws SystemRunException {
//		try {
//			// 删除改角色对应权限信息
//			List<TSysCharofgroup> charofgroupList = this.charofgroupDAO
//					.findCharofgroupByUserGroupId(userGroup.getId());
//			for (TSysCharofgroup charofgroup : charofgroupList) {
//				charofgroupDAO.delete(charofgroup);
//			}
//		} catch (HibernateException e) {
//			log.error("删除用户组对应角色信息发生异常!" + e.getMessage());
//			throw new SystemRunException("删除用户组对应角色信息发生异常!", e);
//		}
//		try {
//			// 重新添加角色对应权限
//			String poweridString = charId;
//			String[] powerIds = poweridString.split(",");
//			for (String power : powerIds) {
//				if (StringUtils.isNotBlank(power)) {
//					TSysCharofgroup charofgroup = new TSysCharofgroup();
//					charofgroup.setTSysUsergroup(userGroup);
//					TSysCharacter sysCharacter = new TSysCharacter();
//					sysCharacter.setId(power);
//					charofgroup.setTSysCharacter(sysCharacter);
//					charofgroup.setStatus(true);
//					charofgroup.setModperson(userGroup.getModperson());
//					charofgroup.setModtime(new Timestamp(System
//							.currentTimeMillis()));
//					charofgroupDAO.save(charofgroup);
//				}
//			}
//		} catch (HibernateException e) {
//			log.error("保存角色对应权限信息发生异常!" + e.getMessage());
//			throw new SystemRunException("保存角色对应权限信息发生异常!", e);
//		}
//	}
//
//	/**
//	 * 角色 修改对应权限信息
//	 */
//	public void updateUserofgroup(TSysUsergroup userGroup, String userGroupId)
//			throws SystemRunException {
//		try {
//			// 删除改角色对应权限信息
//			List<TSysUserofusergroup> userofusergroupList = this.userofGroupDAO
//					.findUserofgroupByUserGroupId(userGroup.getId());
//			for (TSysUserofusergroup userofGroup : userofusergroupList) {
//				userofGroupDAO.delete(userofGroup);
//			}
//		} catch (HibernateException e) {
//			log.error("删除用户组对应用户信息发生异常!" + e.getMessage());
//			throw new SystemRunException("删除用户组对应用户信息发生异常!", e);
//		}
//		try {
//			// 重新添加角色对应权限
//			String userGroupidString = userGroupId;
//			String[] userGroupIds = userGroupidString.split(",");
//			for (String userGroupString : userGroupIds) {
//				if (StringUtils.isNotBlank(userGroupString)) {
//					TSysUserofusergroup userofgroup = new TSysUserofusergroup();
//					userofgroup.setTSysUsergroup(userGroup);
//
//					TSysUser sysUser = new TSysUser();
//					sysUser.setId(userGroupString);
//					userofgroup.setTSysUser(sysUser);
//					userofgroup.setStatus(true);
//					userofgroup.setModperson(userGroup.getModperson());
//					userofgroup.setModtime(new Timestamp(System
//							.currentTimeMillis()));
//					userofGroupDAO.save(userofgroup);
//				}
//			}
//		} catch (HibernateException e) {
//			log.error("保存用户组对应用户信息发生异常!" + e.getMessage());
//			throw new SystemRunException("保存用户组对应用户信息发生异常!", e);
//		}
//	}
//
//	public TSysUsergroup findByUserGroupId(String id) throws SystemRunException {
//		return userGroupDAO.findById(id);
//
//	}
//
//	/**
//	 * 用户组 查询角色信息
//	 * 
//	 * @param gid
//	 * @return
//	 * @throws SystemRunException
//	 */
//	public List<TSysCharacter> charofGroupList(String gid)
//			throws SystemRunException {
//		if (StringUtils.isBlank(gid)) {
//			throw new SystemRunException("用户组id为空");
//		}
//		return this.charofgroupDAO.list(gid, StatusProperties.SQLSTATUS);
//	}
//
//	/**
//	 * 用户组 查询用户信息
//	 * 
//	 * @param gid
//	 * @return
//	 * @throws SystemRunException
//	 */
//	public List<TSysUser> useurofGroupList(String gid)
//			throws SystemRunException {
//		if (StringUtils.isBlank(gid)) {
//			throw new SystemRunException("用户组id为空");
//		}
//		return this.userofGroupDAO.list(gid, StatusProperties.SQLSTATUS);
//	}
//
//	/**
//	 * 查询部门信息findDepartment
//	 */
//	public List<TSysDepartment> departmentList() {
//		return this.deptDAO.findByStatus(StatusProperties.STATUS);
//	}
//
//	public PageBean departmentList(TSysDepartment dept, PageBean pb)
//			throws SystemRunException {
//		return deptDAO.list(dept, pb);
//	}
//
//	public TSysDepartment findByDepartmentId(String deptId)
//			throws SystemRunException {
//		return this.deptDAO.findById(deptId);
//	}
//
//	public void addDepartment(TSysDepartment dept) throws SystemRunException {
//		try {
//			dept.setModtime(new Timestamp(System.currentTimeMillis()));
//			if (StringUtils.isNotBlank(dept.getParentid())) {
//				Integer layer = deptDAO.findById(dept.getParentid()).getLayer();
//				dept.setLayer(layer + 1);
//			} else {
//				dept.setLayer(1);
//			}
//			this.deptDAO.save(dept);
//		} catch (HibernateException e) {
//			log.error("添加部门发生异常!" + e.getMessage());
//			throw new SystemRunException("添加部门发生异常!", e);
//		}
//
//	}
//
//	public void updateDepartment(TSysDepartment dept) throws SystemRunException {
//		try {
//			dept.setModtime(new Timestamp(System.currentTimeMillis()));
//			if (StringUtils.isNotBlank(dept.getParentid())) {
//				Integer layer = deptDAO.findById(dept.getParentid()).getLayer();
//				dept.setLayer(layer + 1);
//			} else {
//				dept.setLayer(1);
//			}
//			// 子部门级别 更新 为当前部门+1
//			List<TSysDepartment> deptList = deptDAO
//					.findByParentid(dept.getId());
//			int slayer = dept.getLayer() + 1;
//			for (TSysDepartment sdept : deptList) {
//				sdept.setLayer(slayer);
//				deptDAO.attachDirty(sdept);
//			}
//			this.deptDAO.merge(dept);
//		} catch (HibernateException e) {
//			log.error("更新部门发生异常!" + e.getMessage());
//			throw new SystemRunException("更新部门发生异常!", e);
//		}
//
//	}
//
//	/**
//	 * 查找部门 生成select
//	 */
//	public String findDepartment(String deptId) throws SystemRunException {
//		try {
//			StringBuffer smenu = new StringBuffer();
//			List<TSysDepartment> deptList = deptDAO.findDepartment(1,
//					StatusProperties.STATUS);
//			for (TSysDepartment dept : deptList) {
//				if (dept.getId().equals(deptId)) {
//					continue;
//				}
//				smenu.append("<option value=" + dept.getId() + ">|--"
//						+ dept.getName() + "</option>");
//				List<TSysDepartment> deptList1 = deptDAO.findDepartment(dept
//						.getId(), 2, StatusProperties.STATUS);
//				for (TSysDepartment dept1 : deptList1) {
//					if (dept1.getId().equals(deptId)) {
//						continue;
//					}
//					if (dept1.getParentid().equals(dept.getId())) {
//						smenu.append("<option value=" + dept1.getId()
//								+ ">|&nbsp;&nbsp;|--" + dept1.getName()
//								+ "</option>");
//					}
//					List<TSysDepartment> deptList2 = deptDAO.findDepartment(
//							dept1.getId(), 3, StatusProperties.STATUS);
//					for (TSysDepartment dept2 : deptList2) {
//						if (dept2.getId().equals(deptId)) {
//							continue;
//						}
//						if (dept2.getParentid().equals(dept1.getId())) {
//							smenu.append("<option value=" + dept1.getId()
//									+ ">|&nbsp;&nbsp;|&nbsp;&nbsp;|--"
//									+ dept1.getName() + "</option>");
//						}
//						List<TSysDepartment> deptList3 = deptDAO
//								.findDepartment(dept2.getId(), 4,
//										StatusProperties.STATUS);
//						for (TSysDepartment dept3 : deptList3) {
//							if (dept3.getId().equals(deptId)) {
//								continue;
//							}
//							if (dept3.getParentid().equals(dept2.getId())) {
//								smenu.append("<option value=" + dept2.getId()
//										+ ">|&nbsp;&nbsp;|&nbsp;&nbsp;|--"
//										+ dept2.getName() + "</option>");
//							}
//						}
//					}
//
//				}
//			}
//			return smenu.toString();
//		} catch (HibernateException e) {
//			log.error("查找部门 生成select 发生异常!" + e.getMessage());
//			throw new SystemRunException("查找部门 生成select 发生异常!", e);
//		}
//	}

}
